﻿(function ($) {
    $.fn.fixFloat = function (options) {

        var defaults = {
            enabled: true
        };
        var options = $.extend(defaults, options);

        var offsetTop; 	/**Distance of the element from the top of window**/
        var s; 			/**Scrolled distance from the top of window through which we have moved**/
        var fixMe = true;
        var repositionMe = true;

        var tbh = $(this);
        var originalOffset = tbh.css('top'); /**Get the actual distance of the element from the top**/

        tbh.css({ 'position': 'absolute' });

        if (options.enabled) {
            $(window).scroll(function () {
                var offsetTop = tbh.offset().top; /**Get the current distance of the element from the top**/
                var s = parseInt($(window).scrollTop(), 10); /**Get the from the top of wondow through which we have scrolled**/
                var fixMe = true;
                if (s > offsetTop) {
                    fixMe = true;
                } else {
                    fixMe = false;
                }

                if (s < parseInt(originalOffset, 10)) {
                    repositionMe = true;
                } else {
                    repositionMe = false;
                }

                if (fixMe) {
                    var cssObj = {
                        'position': 'fixed',
                        'top': '0px'
                    }
                    tbh.css(cssObj);
                }
                if (repositionMe) {
                    var cssObj = {
                        'position': 'absolute',
                        'top': originalOffset
                    }
                    tbh.css(cssObj);
                }
            });
        }
    };
})(jQuery);